package com.wuzhiaite.javaweb.base.csm.mybatis;

import org.apache.ibatis.mapping.MappedStatement;
import org.springframework.stereotype.Component;

/**
 * @author lpf
 */
@Component
public class InsertListProvider {


    /**
     * 批量插入
     *
     * @param ms
     */
    public String insertList(MappedStatement ms) {
//        final Class<?> entityClass = getEntityClass(ms);
        //开始拼sql
        StringBuilder sql = new StringBuilder();
        sql.append("<bind name=\"listNotEmptyCheck\" value=\"@tk.mybatis.mapper.util.OGNL@notEmptyCollectionCheck(list, '" + ms.getId() + " 方法参数为空')\"/>");
//        sql.append(SqlHelper.insertIntoTable(entityClass, tableName(entityClass), "list[0]"));
//        sql.append(SqlHelper.insertColumns(entityClass, false, false, false));
        sql.append(" VALUES ");
        sql.append("<foreach collection=\"list\" item=\"record\" separator=\",\" >");
        sql.append("<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">");
        //获取全部列
//        Set<EntityColumn> columnList = EntityHelper.getColumns(entityClass);
        //单独增加对 genId 方式的支持
//        for (EntityColumn column : columnList) {
//            if (column.getGenIdClass() != null) {
//                sql.append("<bind name=\"").append(column.getColumn()).append("GenIdBind\" value=\"@tk.mybatis.mapper.genid.GenIdUtil@genId(");
//                sql.append("record").append(", '").append(column.getProperty()).append("'");
//                sql.append(", @").append(column.getGenIdClass().getCanonicalName()).append("@class");
//                sql.append(", '").append(tableName(entityClass)).append("'");
//                sql.append(", '").append(column.getColumn()).append("')");
//                sql.append("\"/>");
//            }
//        }
//        //当某个列有主键策略时，不需要考虑他的属性是否为空，因为如果为空，一定会根据主键策略给他生成一个值
//        for (EntityColumn column : columnList) {
//            if (column.isInsertable()) {
//                sql.append(column.getColumnHolder("record") + ",");
//            }
//        }
//        sql.append("</trim>");
//        sql.append("</foreach>");
        return sql.toString();
    }


}
